﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.DataContract
{
    /// <summary>
    /// Contrato de dados para controle de beneficios de politica de corretagem
    /// </summary>
    [DataContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Corretagem.Service.DataContract", Name = "ControleBeneficio")]
    public class ControleBeneficio
    {
        #region Atributos

        /// <summary>
        /// Codigo da política de corretagem
        /// </summary>
        private int? _codigoPolitica;

        /// <summary>
        /// Data inicial de vigência da política de corretagem
        /// </summary>
        private DateTime? _dataInicial;

        /// <summary>
        /// Tipo de beneficio da política de corretagem
        /// </summary>
        private DataContract.TipoBeneficio _tipoBeneficio;

        /// <summary>
        /// Valor ou quantidade do benefício da política de corretagem
        /// </summary>
        private decimal? _valorQuantidade;

        #endregion

        #region Propriedades

        /// <summary>
        /// Codigo da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public int? CodigoPolitica
        {
            get
            {
                return _codigoPolitica;
            }
            set
            {
                _codigoPolitica = value;
            }
        }

        /// <summary>
        /// Data inicial de vigência da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public DateTime? DataInicial
        {
            get
            {
                return _dataInicial;
            }
            set
            {
                _dataInicial = value;
            }
        }

        /// <summary>
        /// Tipo de beneficio da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public DataContract.TipoBeneficio TipoBeneficio
        {
            get
            {
                return _tipoBeneficio;
            }
            set
            {
                _tipoBeneficio = value;
            }
        }

        /// <summary>
        /// Valor ou quantidade do benefício da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public decimal? ValorQuantidade
        {
            get
            {
                return _valorQuantidade;
            }
            set
            {
                _valorQuantidade = value;
            }
        }

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor ControleBeneficio
        /// </summary>
        public ControleBeneficio() { }

        /// <summary>
        /// Construtor ControleBeneficio
        /// </summary>
        /// <param name="codigoPolitica"></param>
        /// <param name="dataInicial"></param>
        /// <param name="tipoBeneficio"></param>
        /// <param name="valorQuantidade"></param>
        public ControleBeneficio(int? codigoPolitica, DateTime? dataInicial, DataContract.TipoBeneficio tipoBeneficio, decimal? valorQuantidade)
        {
            this._codigoPolitica = codigoPolitica;
            this._dataInicial = dataInicial;
            this._tipoBeneficio = tipoBeneficio;
            this._valorQuantidade = valorQuantidade;
        }

        #endregion

    }

}